﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace TP2.Lib
{
     [Serializable]
    public class FlotaAvionetas : Flota
    {
        const int TAMANIO_MIN_FLOTA = 1;

     
        public FlotaAvionetas(double[] posI, int cantAviones, int[] dimensiones) : base(posI, cantAviones) 
        {
            if (cantAviones >= TAMANIO_MIN_FLOTA)
            {
                int cant = 0; 
               
                // posicion final = (conserva el x de la posInicial; y minimo=0; z=0)
                //double[] posFinal = new double[3]{this.PosicionInicial[0], 0, 0 }; 

                /*creo el primer avion y le digo q va a ser el guia*/
                double[] posicionFinal = new double[3] {posI[0], dimensiones[1], 0};

                Avioneta primerAvioneta = new Avioneta(posI, posicionFinal, dimensiones);
                primerAvioneta.EsGuia = true;
                this.Aviones.Add(primerAvioneta);

                double xPosInicial = primerAvioneta.Posicion[0];
                double yPosInicial = primerAvioneta.Posicion[1]; 

                while (cant < cantAviones) /*'<' porque ya el primer avion lo cree afuera*/
                {
                    cant++;
                    double[] posicionDeUnaAvioneta = new double[3];
                    double[] posicionFinalDeUnaAvioneta = new double[3];
                    xPosInicial += (primerAvioneta.Radio * 2);
                    posicionDeUnaAvioneta[0] = xPosInicial;
                    posicionDeUnaAvioneta[1] = yPosInicial;
                    posicionDeUnaAvioneta[2] = 0;
                    posicionFinalDeUnaAvioneta[0] = posicionDeUnaAvioneta[0];
                    posicionFinalDeUnaAvioneta[1] = dimensiones[1];
                    posicionFinalDeUnaAvioneta[2] = 0;

                    Avioneta unaAvioneta = new Avioneta(posicionDeUnaAvioneta, posicionFinalDeUnaAvioneta, dimensiones);

                    unaAvioneta.FlotaALaQuePertenece = this;
                    this.Aviones.Add(unaAvioneta);                    
                }                
            }
            else
            {
                throw new Exception();
                // Tratar Excepcion
            }
        }
    }
}
